<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>元字符</title>
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-base.css" />
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-medium.css" />

 </head>
 <body class="docs"><div class="navbar navbar-fixed-top">
  <div class="navbar-inner clearfix">
    <ul class="nav" style="width: 100%">
      <li style="float: left;"><a href="regexp.reference.delimiters.html">« 分隔符</a></li>
      <li style="float: right;"><a href="regexp.reference.escape.html">转义序列(反斜线) »</a></li>
    </ul>
  </div>
</div>
<div id="breadcrumbs" class="clearfix">
  <ul class="breadcrumbs-container">
    <li><a href="index.html">PHP Manual</a></li>
    <li><a href="reference.pcre.pattern.syntax.html">PCRE 正则语法</a></li>
    <li>元字符</li>
  </ul>
</div>
<div id="layout">
  <div id="layout-content"><div id="regexp.reference.meta" class="section">
  <h2 class="title">元字符</h2>
  <p class="para">  
  正则表达式的魔力源于它可以在模式中拥有选择和重复的能力。 一些字符被赋予
  特殊的涵义，使其不再单纯的代表自己，模式中的这种有特殊涵义的编码字符
  称为 <em class="emphasis">元字符</em>。
  </p>
  <p class="para">
  共有两种不同的元字符：一种是可以在模式中方括号外任何地方使用的，另外一种
  是需要在方括号内使用的。
  在方括号外使用的元字符如下：


   <table class="doctable table">
    <caption><strong>方括号外的元字符</strong></caption>
    
     <thead>
      <tr>
       <th>元字符</th><th>描述</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>\</td><td>一般用于转义字符</td>
      </tr>

      <tr>
       <td>^</td><td>断言目标的开始位置(或在多行模式下是行首)</td>
      </tr>

      <tr>
       <td>$</td><td>断言目标的结束位置(或在多行模式下是行尾)</td>
      </tr>

      <tr>
       <td>.</td><td>匹配除换行符外的任何字符(默认)</td>
      </tr>

      <tr>
       <td>[</td><td>开始字符类定义</td>
      </tr>

      <tr>
       <td>]</td><td>结束字符类定义</td>
      </tr>

      <tr>
       <td>|</td><td>开始一个可选分支</td>
      </tr>

      <tr>
       <td>(</td><td>子组的开始标记</td>
      </tr>

      <tr>
       <td>)</td><td>子组的结束标记</td>
      </tr>

      <tr>
       <td>?</td><td>作为量词，表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。
       (查阅<a href="regexp.reference.repetition.html" class="link">量词</a>)
      </td>
      </tr>

      <tr>
       <td>*</td><td>量词，0 次或多次匹配</td>
      </tr>

      <tr>
       <td>+</td><td>量词，1 次或多次匹配</td>
      </tr>

      <tr>
       <td>{</td><td>自定义量词开始标记</td>
      </tr>

      <tr>
       <td>}</td><td>自定义量词结束标记</td>
      </tr>

     </tbody>
    
   </table>

   模式中方括号内的部分称为“<a href="regexp.reference.character-classes.html" class="link">字符类</a>”。
   在一个字符类中仅有以下可用元字符：

   <table class="doctable table">
    <caption><strong>方括号内的元字符（<em class="emphasis">字符类</em>）</strong></caption>
    
     <thead>
      <tr>
       <th>元字符</th><th>描述</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>\</td><td>转义字符</td>
      </tr>

      <tr>
       <td>^</td><td>仅在作为第一个字符(方括号内)时，表明字符类取反</td>
      </tr>

      <tr>
       <td>-</td><td>标记字符范围</td>
      </tr>

     </tbody>
    
   </table>


   下面章节描述了每个元字符的用法。
  </p>
 </div></div></div></body></html>